﻿using System;
using System.Data.SQLite;
using System.Globalization;
using System.Linq;
using Dapper;
using SoftLab.Clases;

namespace SoftLab.Reportes
{
    class ImprimirQuímica
    {
        public void Imprimir(int prueba)
        {
            var e = new Evaluacion();
            var p = new Pacientes();
            //Armar datos:
            using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
            {
                conexion.Open();
                var q = "select * from evaluacion where id=@Id";
                var q3 = "select * from pacientes where id=@Id";
                e = conexion.Query<Evaluacion>(q, new {Id = prueba}).FirstOrDefault();
                if (e != null) p = conexion.Query<Pacientes>(q3, new {Id = e.PacienteId}).FirstOrDefault();
                conexion.Close();
            }

            var r = new Report(Properties.Settings.Default.Impresora) {Prueba = prueba.ToString(CultureInfo.InvariantCulture)};
            r.AgregarTítulo(Properties.Settings.Default.Empresa);
            r.AgregarSubtitulo(Properties.Settings.Default.Direccion);
            r.AgregarSubtitulo(Properties.Settings.Default.Telefono);
            r.AgregarSubtitulo("");
            if (p != null) r.AgregarSubtitulo(String.Format("PACIENTE: {0} {1}", p.Nombre, p.Apellido));
            if (p != null) r.AgregarSubtitulo(String.Format("EDAD: {0}", p.Edad));
            r.AgregarSubtitulo("");
            if (e != null) r.AgregarSubtitulo(String.Format("INDICADO POR: {0}", e.Indicacion));
            r.AgregarSubtitulo("");
            r.AgregarSubtitulo("EXAMEN: QUÍMICA SANGUÍNEA");
            using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
            {
                conexion.Open();
                var q = "select * from detalle_evaluacion where evaluacionid=@Id";
                var query = conexion.Query<DetalleEvaluacion>(q, new {Id = prueba}).ToList();
                foreach (var d in query)
                {
                    const string q2 = "select nombre from analisis where id=@Id";
                    var examen = conexion.Query<string>(q2, new {Id = d.AnalisisId}).FirstOrDefault();
                    if (examen != null)
                    {
                        var item = new Items
                        {
                            Nombre = examen,
                            Resultado = d.Valor1,
                            ValorNormal = d.ValorNormal
                        };
                        r.AgregarItem(item);
                    }
                }
                conexion.Close();
            }
            
            r.AgregarPie("");
            r.AgregarPie("________________________________");
            r.AgregarPie("              Firma             ");
            r.Imprimir();
        }
    }
}
